commonlibsse_ng\re\p\PlayerCharacter/
grab_data.rs

1use crate::re::{
2    BSPointerHandle::ObjectRefHandle, BSTArray::BSTSmallArray,
3    bhkMouseSpringAction::bhkMouseSpringAction, hkRefPtr::hkRefPtr,
4};
5
6#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
7pub enum GrabbingType {
8    #[default]
9    None = 0,
10    Normal = 1,
11    Telekinesis = 2,
12}
13
14#[repr(C)]
15#[derive(Debug, Default, Clone, PartialEq)]
16pub struct GrabData {
17    grabSpring: BSTSmallArray<hkRefPtr<bhkMouseSpringAction>, 4>,
18    grabbedObject: ObjectRefHandle,
19    grabObjectWeight: f32,
20    grabDistance: f32,
21    unk004: f32,
22    unk008: u64,
23}
24const _: () = {
25    assert!(core::mem::offset_of!(GrabData, grabSpring) == 0x0);
26    assert!(core::mem::offset_of!(GrabData, grabbedObject) == 0x30);
27    assert!(core::mem::offset_of!(GrabData, grabObjectWeight) == 0x34);
28    assert!(core::mem::offset_of!(GrabData, grabDistance) == 0x38);
29    assert!(core::mem::offset_of!(GrabData, unk004) == 0x3c);
30    assert!(core::mem::offset_of!(GrabData, unk008) == 0x40);
31
32    assert!(core::mem::size_of::<GrabData>() == 0x48);
33};
34
35#[repr(C)]
36#[derive(Debug, Default, Clone, PartialEq)]
37pub struct VRGrabData {
38    /// - `0x8(hkRefPtr) * 4(N) = 32 = 0x20`
39    grabSpring: BSTSmallArray<hkRefPtr<bhkMouseSpringAction>, 0x20>,
40    grabbedObject: ObjectRefHandle,
41    grabObjectWeight: f32,
42    grabType: GrabbingType,
43    grabDistance: f32,
44    unk40: f64,
45    unk48: u64,
46    unk50: f64,
47    unk58: u64,
48    unk60: u32,
49    unk64Flags: u32,
50}